home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / gfx / show / FV21BETA-src.lha / FV21BETA-src / BestModeID.c next >
C/C++ Source or Header  |  1997-08-25  |  2KB  |  62 lines

  1. #include <cybergraphics/cybergraphics.h>
  2. #include <dos/dosasl.h>
  3. #include <exec/execbase.h>
  4. #include <exec/memory.h>
  5. #include <exec/types.h>
  6. #include <proto/cybergraphics.h>
  7. #include <proto/dos.h>
  8. #include <proto/exec.h>
  9. #include <utility/tagitem.h>
  10.  
  11. char template[]="DEPTH/A/N,NOMW/A/N,NOMH/A/N";
  12.  
  13. struct {ULONG *depth;
  14.         ULONG *nomw;
  15.         ULONG *nomh;} arglist={NULL};
  16.  
  17. struct Library *CyberGfxBase;
  18.  
  19. ULONG main() {
  20.   ULONG errorcode;
  21.   ULONG modeid;
  22.   struct RDArgs *readarg;
  23.  
  24.   errorcode=RETURN_FAIL;
  25.   if((DOSBase=(struct DosLibrary *)OpenLibrary("dos.library",37))!=0) {
  26.     if((CyberGfxBase=OpenLibrary("cybergraphics.library",40))!=0) {
  27.       if((readarg=ReadArgs(template,(LONG *)&arglist,0))!=0) {
  28.  
  29.         modeid=BestCModeIDTags(CYBRBIDTG_Depth,*arglist.depth,CYBRBIDTG_NominalWidth,*arglist.nomw,CYBRBIDTG_NominalHeight,*arglist.nomh);
  30.  
  31.         if(modeid==INVALID_ID) {
  32.           PutStr("No displaymode matching your parameters was found.\n");
  33.         }
  34.         else {
  35.           ULONG w,h,d;
  36.  
  37.           w=GetCyberIDAttr(CYBRIDATTR_WIDTH,modeid);
  38.           h=GetCyberIDAttr(CYBRIDATTR_HEIGHT,modeid);
  39.           d=GetCyberIDAttr(CYBRIDATTR_DEPTH,modeid);
  40.  
  41.           VPrintf("ModeID: $%08lx ",&modeid);
  42.           VPrintf("Width: %4ld ",&w);
  43.           VPrintf("Height: %4ld ",&h);
  44.           VPrintf("Depth: %2ld\n",&d);
  45.         }
  46.  
  47.         errorcode=0;
  48.  
  49.         FreeArgs(readarg);
  50.       }
  51.  
  52.       CloseLibrary(CyberGfxBase);
  53.     }
  54.     else {
  55.       PutStr("Couldn't open cybergraphics.library V40\n");
  56.     }
  57.  
  58.     CloseLibrary((struct Library *)DOSBase);
  59.   }
  60.   return(errorcode);
  61. }
  62.